package service.impl;

import global.Constants;
import global.security.SessionUtils;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import service.AccountBookService;
import util.DateUtils;
import dao.AccountBookDAO;
import domain.AccountBook;

/**
 * 账本Service实现类.
 * <p>
 * 创建日期：2010-07-01<br>
 * 创建人：Xiyt<br>
 * 修改日期：<br>
 * 修改人：<br>
 * 修改内容：<br>
 * 
 * @author Xiyt
 * @version 1.0
 */
public class AccountBookServiceImpl implements AccountBookService {
	/**
	 * 账本DAO
	 * */
	private AccountBookDAO accountBookDao = null;

	/**
	 * 设定账本DAO
	 * */
	public void setAccountBookDao(AccountBookDAO accountBookDao) {
		this.accountBookDao = accountBookDao;
	}


	/**
	 * 根据条件查询账本列表
	 * @param paramAccountBook 账本条件
	 * @return List 账本列表
	 */
	public List<AccountBook> selectByCriteria(AccountBook paramAccountBook) {
		// 取得accountBookList
		paramAccountBook = getConditions(paramAccountBook);
		List<AccountBook> accountBookList = accountBookDao.selectByCriteria(paramAccountBook);
		List<AccountBook> results = new ArrayList<AccountBook>();
		if(null != accountBookList){
			for(int i=0;i<accountBookList.size();i++){
				AccountBook accountBook = accountBookList.get(i);
				accountBook.setUpdateDateStr(DateUtils.formatDate2Str(accountBook.getUpdateTime(), DateUtils.DATE_TIME_PATTON_1));
				results.add(accountBook);
			}
		}
		return results;
	}

	/**
	 * 添加账本
	 * @param accountBook 账本
	 */
	public void insert(AccountBook accountBook) {
		// 删除区分：未删除
		accountBook.setDelflag(Constants.DEL_FLAG_1);
		// 系统时间
		Timestamp sysdate = new Timestamp(System.currentTimeMillis());
		accountBook.setCreateUser(SessionUtils.getCurrentUserId());
		accountBook.setCreateTime(sysdate);
		accountBook.setUpdateUser(SessionUtils.getCurrentUserId());
		accountBook.setUpdateTime(sysdate);
		accountBookDao.insert(accountBook);
	}

	/**
	 * 修改账本
	 * @Description: 修改账本
	 * @param accountBook 账本
	 */
	public void update(AccountBook accountBook) {
		// 系统时间
		Timestamp sysdate = new Timestamp(System.currentTimeMillis());
		accountBook.setUpdateUser(SessionUtils.getCurrentUserId());
		accountBook.setUpdateTime(sysdate);
		accountBookDao.updateByPrimaryKey(accountBook);
	}

	/**
	 * 删除账本
	 * @param accountBookId 账本ID
	 */
	public void delete(Integer accountBookId) {
		// 删除账本
		accountBookDao.deleteByPrimaryKey(accountBookId);
	}
	
	/**
	 * 设置公共参数
	 * @param paramAccountBook 参数对象
	 */
	private AccountBook getConditions(AccountBook paramAccountBook){
		paramAccountBook.setCreateUser(SessionUtils.getCurrentUserId());// 当前用户
		return paramAccountBook;
	}
}
